Skip to content

feat(canvas): refine Notes workflow - #103

Merged
Owen-Richard merged 44 commits into
mainfrom
owen/10-22-canvas-polish
Oct 26, 2026
Merged

Owen-Richard merged 44 commits into
mainfrom
owen/10-22-canvas-polish

Conversation

@Owen-Richard

@Owen-Richard Owen-Richard commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Before:

  • Many clicks for pick & polish: Click button, then have to click page (overlay goes away) and then move hover and then click
  • There are too many clicks for most interactions lets make this snappier
  • Strings labelling the feature are inconsistent, is it a note? an improvement? both?

What changes

This is a full Pick & polish Notes workflow update

  • Starting Pick & polish now begins target selection immediately while source capture continues in the background. Reviewers can press S to start or cancel selection from the canvas or preview, including while capture is pending.
  • The Notes counter opens and closes the sidebar independently from selection. Saved pins remain available without the sidebar, and guarded dismissal protects drafts and active conversations.
  • Notes use the selected target as the conversation heading
  • Reviewers can save with Command+Enter or Control+Enter. Compact keycaps show the shortcut without crowding the composer.
  • Ordinary Comments and Pick & polish remain available together. Only the active review surface controls its pins and selections, and unfinished work prevents the other surface from interrupting it.
  • Preview shortcut requests require the current authenticated connection, a focused preview, and a trusted user gesture so embedded content cannot forge selection changes.

Storybook screenshots

Components/Prototype canvas/Improvement threads: Pins Without Sidebar (light; 1440x900)

Improvement Threads story with a Notes toggle and one canvas pin

Components/Prototype canvas/Improvement threads: Active Notes (light; 1440x900)

Improvement Threads story with the active Notes sidebar

Components/Prototype canvas/Improvement threads: Blocked Notes (light; 1440x900)

Improvement Threads story with two blocked notes and overflow actions

Components/Prototype canvas/Improvement threads: Copilot Answer (light; 1440x900)

Improvement Threads story with a note ready to review

Components/Prototype canvas/Improvement threads: Author Identity Unavailable (light; 1440x900)

Improvement Threads story with the author identity warning

Components/Prototype canvas/Improvement threads: No Pending Requests (light; 1440x900)

Improvement Threads story with the empty Notes state

Components/Prototype canvas/Follow-up thread sample: Sample (light; 1440x900)

Follow-up Thread Sample story with three notes and canvas pins

Start selection immediately, retain captured note provenance, and ignore cancelled capture results. Cover delayed capture and direct hover-to-pick behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Support V in the canvas and preview, preserve Escape cancellation, and leave typing and dialogs alone. Document the shortcut and cover authenticated forwarding and packaged browser behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Replace the V shortcut with S across the canvas, preview bridge, accessible metadata, copy, documentation, tests, and built assets.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Keep S shortcut cancellation from moving focus to the Pick & polish toolbar button while retaining existing focus restoration for direct controls and Escape flows.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
@Owen-Richard
Owen-Richard requested review from a team and nshki as code owners October 23, 2026 18:55
Copilot AI max review requested due to automatic review settings October 23, 2026 18:55
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Confirmed interaction and keyboard-handling regressions can hide draft controls, interrupt prototype input, and prevent cancellation.

7 open issues
2 files not reviewed
  • .github/extensions/replica-prototype/assets/renderer-improvement-notes-prototype.js: Generated file
  • .github/extensions/replica-prototype/assets/renderer-prototype-canvas-improvement-threads.js: Generated file
What changed in this PR

Refines the prototype canvas’s Pick & polish Notes workflow, making selection faster and conversation controls more consistent.

Changes:

  • Adds S-key selection toggling and immediate selection during source capture.
  • Updates conversation dismissal, filtering, deletion, labels, and the Notes counter.
  • Adds Save shortcuts and keycaps, expands interaction coverage, and refreshes extension assets and documentation.
File Description
hub/​vite.prototype-canvas.config.mjs Includes the shortcut helper in the Notes bundle.
hub/​script/​check-prototype-canvas-renderer.mjs Expands renderer interaction checks.
hub/​docs/​prototype-canvas.md Documents the updated Notes workflow.
hub/​app/​javascript/​utils/​is-annotation-shortcut/​index.ts Adds shared S-key shortcut detection.
hub/​app/​javascript/​features/​prototype-canvas-improvement-threads/​styles.css Styles header actions and direct deletion.
hub/​app/​javascript/​features/​prototype-canvas-improvement-threads/​index.tsx Updates conversation dismissal and row actions.
hub/​app/​javascript/​features/​prototype-canvas-improvement-threads/​index.test.tsx Covers dismissal, draft protection, and deletion.
hub/​app/​javascript/​features/​prototype-canvas-improvement-threads/​en.ts Revises Notes, filter, and deletion labels.
hub/​app/​javascript/​features/​prototype-canvas-improvement-notes/​use-preview-selection/​index.ts Handles preview toggles and dismissal metadata.
hub/​app/​javascript/​features/​prototype-canvas-improvement-notes/​styles.css Adds Save keycaps and adjusts pin focus styling.
hub/​app/​javascript/​features/​prototype-canvas-improvement-notes/​index.tsx Adds immediate selection, counter toggling, and submission shortcuts.
hub/​app/​javascript/​features/​prototype-canvas-improvement-notes/​en.ts Updates selection hints and composer labels.
hub/​app/​javascript/​application/​prototype-preview-bridge/​index.ts Forwards shortcuts and preview pointer dismissal.
hub/​app/​javascript/​application/​prototype-preview-bridge/​improvement-selection.test.ts Tests shortcut authentication and dismissal behavior.
hub/​app/​javascript/​application/​prototype-canvas/​tests/​improvement-notes.test.tsx Expands capture, cancellation, submission, and focus coverage.
.github/​extensions/​replica-prototype/​assets/​renderer-prototype-canvas-improvement-threads.js Refreshes bundled conversation presentation.
.github/​extensions/​replica-prototype/​assets/​renderer-improvement-notes-prototype.js Refreshes bundled Notes orchestration and shortcuts.

Review effort: Max

Comment thread hub/app/javascript/utils/is-annotation-shortcut/index.ts Outdated
Comment thread hub/app/javascript/application/prototype-preview-bridge/index.ts
Comment thread hub/app/javascript/features/prototype-canvas-improvement-notes/index.tsx Outdated
Comment thread hub/app/javascript/features/prototype-canvas-improvement-notes/index.tsx Outdated
Comment thread hub/app/javascript/features/prototype-canvas-improvement-threads/index.tsx Outdated
Comment thread hub/app/javascript/utils/is-annotation-shortcut/index.ts Outdated
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca

@nshki nshki left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the polish here, @Owen-Richard! Left a couple change requests. Also if you don't mind, could you ask your agent to update the PR title and description according to our conventions?

Happy to chat about this in the channel if needed.

Comment thread .github/workflows/dependency-age.yml Outdated
@Owen-Richard Owen-Richard changed the title Improve prototype canvas Notes workflow feat(canvas): refine Notes workflow Oct 23, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca

# Conflicts:
#	.github/extensions/replica-prototype/assets/canvas-bridge.js
#	.github/extensions/replica-prototype/assets/renderer.css
#	.github/extensions/replica-prototype/assets/renderer.js
@Owen-Richard
Owen-Richard requested a review from nshki October 23, 2026 20:59
@Owen-Richard Owen-Richard self-assigned this Oct 23, 2026
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Comment thread hub/app/javascript/utils/is-annotation-shortcut/index.ts
nshki added a commit that referenced this pull request Oct 23, 2026
<!-- Use a conventional commit-style title, such as "fix(hub): retain
prototype history". -->

## Why

<!-- Explain the problem and why this change matters in a short,
plain-English paragraph. Link the issue when applicable. -->

Bundler Audit can block a pull request when a security fix is available
but still too new for the seven-day dependency policy. This conflict is
blocking #103.

## What changes

<!-- Describe what becomes different for a first-time reader. Explain
necessary terms. Include accurate Mermaid diagrams when they clarify the
proposal, using before/after diagrams when helpful. Add screenshots for
meaningful UI changes. -->
<!-- Omit validation sections, checklists, and routine test/CI summaries
such as "CI is green" or "tests passed". Mention only known verification
gaps that affect the change, not disclaimers about drafting this
description. -->
<!-- For UI changes, prune obsolete and duplicate stories in the
affected catalogues as part of the change. Explain removed UI or
consolidated coverage where needed; see
hub/docs/storybook.md#ui-changes-and-pull-request-evidence. -->

Removes the Bundler Audit job from Hub's GitHub Actions workflow and
updates the dependency-policy guide. Dependabot remains responsible for
dependency vulnerability alerts. The seven-day dependency checks,
lockfiles, local Bundler Audit command, and local `bin/ci` audit step
stay unchanged.

The branch rules for `main` still require `Bundler audit`. An
administrator must remove that required check when merging this change
so GitHub does not wait for a job that no longer exists. This PR does
not change repository rules.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Nishiki Liu <hello@nshki.com>
Owen-Richard and others added 2 commits October 23, 2026 16:02
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca
@Owen-Richard
Owen-Richard enabled auto-merge (squash) October 23, 2026 23:38
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: a2eb9311-df5e-4a24-9722-b52c1e2eaeca

# Conflicts:
#	.github/extensions/replica-prototype/assets/canvas-bridge.js
#	.github/extensions/replica-prototype/assets/renderer-improvement-notes-prototype.js
#	.github/extensions/replica-prototype/assets/renderer-prototype-canvas-improvement-threads.js
#	.github/extensions/replica-prototype/assets/renderer.css
#	.github/extensions/replica-prototype/assets/renderer.js
#	hub/app/javascript/features/prototype-canvas-improvement-notes/index.tsx
#	hub/app/javascript/features/prototype-canvas-improvement-notes/use-preview-selection/index.ts
#	hub/docs/prototype-canvas.md
@Owen-Richard
Owen-Richard merged commit 1d097bf into main Oct 26, 2026
39 checks passed
@Owen-Richard
Owen-Richard deleted the owen/10-22-canvas-polish branch October 26, 2026 17:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants